package com.cn.transfer.common.entity;

import lombok.Data;

import java.util.List;

@Data
public class ProductInfo {
    private Unit unitByRetail;
    private Unit unit;
    private Unit unitByManufacture;
    private Unit unitByStock;
    private String name;
    private UnitType unitType;
    private boolean isPurchase;
    private InventoryClass inventoryClass;
    private boolean isSerialNumber;
    private boolean isNeedQualityInspection;
    private boolean isBatch;
    private List<String> dynamicPropertyValues;
    private String inventoryDescript;
    private String code;
    private boolean inmeterialInspection;
    private boolean isLaborCost;
    private boolean isSale;
    private InmeterialInspectionMethod inmeterialInspectionMethod;
    private UnitGroup unitGroup;
    private OutsourcingInspectionMethod outsourcingInspectionMethod;
    private Unit unitByPurchase;
    private boolean isQualityPeriod;
    private boolean isNew;
    private boolean isMaterial;
    private ExpiredUnit expiredUnit;
    private String shorthand;
    private InvUnitPriceDTOs[] invUnitPriceDTOs;
    private TaxRate taxRate;
    private boolean outsourcingInspection;
    private ProductInfo productInfo;
    private boolean isSuite;
    private ValueType valueType;
    private boolean backflushMaterial;
    private String specification;
    private Unit unitBySale;
    private boolean isMadeSelf;
    private List<String> dynamicPropertyKeys;
    private boolean isMadeRequest;
    private String defaultBarCode;
    private Unit unitByLoadCapacity;
    private boolean productionInspection;
    private int inmeterialInspectionSamplingRate;
    private boolean isSingleUnit;

    // Getters and setters for all fields

    // You can define inner classes for nested objects, such as Unit, UnitType, InventoryClass, etc.

    @Data
    public static class Unit {
        private String code;
        private String name;

        // Getters and setters for Unit
    }

    @Data
    public static class UnitType {
        private String code;

        // Getters and setters for UnitType
    }

    @Data
    public static class InventoryClass {
        private String code;
        private String name;

        // Getters and setters for InventoryClass
    }

    @Data
    public static class DynamicPropertyValues {
        // Define fields for DynamicPropertyValues
        private String priuserdefnvc1;
        private String priuserdefnvc4;
        private String priuserdefnvc6;
        private String priuserdefnvc7;
        private String priuserdefnvc3;
        private String priuserdefnvc5;
        private String priuserdefnvc9;
        private String priuserdefnvc8;
        private String priuserdefnvc2;
    }

    @Data
    public static class InmeterialInspectionMethod {
        private String code;

        // Getters and setters for InmeterialInspectionMethod
    }

    @Data
    public static class UnitGroup {
        private String name;

        // Getters and setters for UnitGroup
    }

    @Data
    public static class OutsourcingInspectionMethod {
        private String code;

        // Getters and setters for OutsourcingInspectionMethod
    }

    @Data
    public static class ExpiredUnit {
        // Define fields for ExpiredUnit
    }

    @Data
    public static class InvUnitPriceDTOs {
        // Define fields for InvUnitPriceDTOs
    }

    @Data
    public static class TaxRate {
        private String name;

        // Getters and setters for TaxRate
    }

    @Data
    public static class ValueType {
        private String code;

        // Getters and setters for ValueType
    }

    @Data
    public static class DynamicPropertyKeys {
        // Define fields for DynamicPropertyKeys
        private String priuserdefnvc1;
        private String priuserdefnvc4;
        private String priuserdefnvc6;
        private String priuserdefnvc7;
        private String priuserdefnvc3;
        private String priuserdefnvc5;
        private String priuserdefnvc9;
        private String priuserdefnvc8;
        private String priuserdefnvc2;

    }
}
